package controller;

public class Judge {
	private static boolean sameH(int[][] a, int x,int y)
	{
		if (y<0||(y+4)>18)
			return false;
		for (int i=1;i<=4;i++)
		{
			if(a[x][y]!=a[x][y+i])
				return false;
		}
		return true;
	}
	private static boolean sameS(int[][] a, int x,int y)
	{
		if (x<0||(x+4)>18)
			return false;
		for (int i=1;i<=4;i++)
		{
			if(a[x][y]!=a[x+i][y])
				return false;
		}
		return true;
	}
	private static boolean sameX1(int[][] a, int x,int y)
	{
		if (x<0||y<0||(x+4)>18||(y+4)>18)
			return false;
		for (int i=1;i<=4;i++)
		{
			if(a[x][y]!=a[x+i][y+i])
				return false;
		}
		return true;
	}
	private static boolean sameX2(int[][] a, int x,int y)
	{
		if (x<0||y>18||(x+4)>18||(y-4)<0)
			return false;
		for (int i=1;i<=4;i++)
		{
			if(a[x][y]!=a[x+i][y-i])
				return false;
		}
		return true;
	}
	public static int winner(int[][] a,int x,int y)
	{
		if(sameH(a,x,y-4)||sameH(a,x,y-3)||sameH(a,x,y-2)||sameH(a,x,y-1)||sameH(a,x,y)||
			sameS(a,x-4,y)||sameS(a,x-3,y)||sameS(a,x-2,y)||sameS(a,x-1,y)||sameS(a,x,y)||
			sameX1(a,x-4,y-4)||sameX1(a,x-3,y-3)||sameX1(a,x-2,y-2)||sameX1(a,x-1,y-1)||sameX1(a,x,y)||
			sameX2(a,x-4,y+4)||sameX2(a,x-4,y+4)||sameX2(a,x-4,y+4)||sameX2(a,x-4,y+4)||sameX2(a,x,y))
			return a[x][y];
		else
			return 0;
	}
}
